package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"io"
	"log"
	"os"
)

func LogFormatter(params gin.LogFormatterParams) string {
	return fmt.Sprintf("[Min] %15s |%5d| %s%6s%s  %5s\n",
		params.TimeStamp.Format("2006-01-02 15:04:05"),
		params.StatusCode,
		params.MethodColor(), params.Method, params.ResetColor(),
		params.Path,
	)
}

// main函数是程序的入口点
func main() {
	// 设置Gin框架为发布模式，优化性能
	gin.SetMode(gin.ReleaseMode)
	// 创建日志文件，用于记录请求信息
	file, _ := os.Create("gin.log")
	// 配置Gin的日志输出，同时写入文件和标准输出
	gin.DefaultWriter = io.MultiWriter(file, os.Stdout)

	// 配置自定义的路由打印函数
	gin.DebugPrintRouteFunc = func(httpMethod, absolutePath, handlerName string, nuHandlers int) {
		log.Printf("[Min] %s %s %s %d \n", httpMethod, absolutePath, handlerName, nuHandlers)
	}
	// 初始化默认的Gin路由器
	router := gin.New()
	router.Use(gin.LoggerWithFormatter(LogFormatter))
	// 定义/index路由
	router.GET("/index", func(c *gin.Context) {})
	router.DELETE("/index", func(c *gin.Context) {})
	// 创建/api路由组
	api := router.Group("api")
	// 在/api路由组下定义/login路由
	api.GET("/login", func(c *gin.Context) {})

	// 打印当前所有的路由信息
	fmt.Println(router.Routes())
	// 启动HTTP服务器，监听8080端口
	router.Run(":8080")
}
